DS4IR

Introdução

Professor Davi Moreira

Professor Rafael Magalhães

18-07-2020

Programa para hoje

  • Apresentação do Programa do Curso
  • Instruções do curso
  • Por quê o R e o RStudio?
  • Projetos e versionamento
  • Sripts, objetos
  • Funções
  • Tipos de dados
  • Dataframes
  • Operadores lógicos
  • Boas práticas de programação

Apresentação do Programa do Curso

Instruções do curso

Motivação

Pipeline

pipeline

R

Por quê o R?

  • Linguagem de programação de código aberto
  • Construída por estatísticos (isso é bom e ruim)
  • Ampla comunidade

Comunidade

Por quê o RStudio?

RStudio

Por quê o R e o RStudio?

RStudio Tela

Projetos e versionamento

version

GitHub

GitHadley

https://github.com/hadley/

GitVersion

NewDir

Projetos e versionamento: referências

Há mais vantagens?

RmdWorkFlow

Exercício: O R como uma calculadora!

Objetos

Exercício: Variáveis e vetores

Podemos criar vários objetos de uma vez:

Agora nós criamos um monte de objetos na memória do R. Vamos apagá-los para nosso ambiente não ficar bagunçado

Vetores

## [1] "1"                 "4"                 "10"               
## [4] "3.14159265358979"  "0.333333333333333" "a"                
## [7] "b"                 "FGV-SP"            "FGV-RJ"

Note que, quando juntamos números e texto, todos os elementos viram texto. Vamos tratar das particularidades de texto mais para a frente.

Estilo

"Programs must be written for people to read, and only incidentally for machines to execute.

— Hal Abelson

The tidy tools manifesto

Estilo

É recomendável que os nomes dos objetos sejam descritivos. Além disso, é valiosa a adoção de um estilo de programação para a sua análise de dados. Ela facilita a leitura e a interpretação humana do código. Vejamos, por exemplo, os nomes de objetos retirados do r4ds. Qual deles é melhor?

The tidyverse style guide

  • The tidyverse style guide: o guia não só apresenta boas práticas e estilo de programação a serem seguidos como é acompanhado por dois pacotes que ajudam o cientista de dados a manter-se consistente em seu código.

  • Há alguns anos o Google desenvolveu seu próprio R Style Guide, mas hoje adota o The tidyverse style guide.

Funções

Funções são o arroz-com-feijão da programação estatística no R. Muitas das análises que vamos fazer no curso tem como fundamento o uso de funções corretas e a identificação dos argumentos apropriados para cada caso.

Nós já vimos alguns exemplos de funções na primeira aula:

install.packages() # instala pacotes
library() # carrega pacotes na memória
sessionInfo() # Informações sobre a versão do R

O principal uso das funções é automatizar operações que, se fossem feitas manualmente, demorariam muito tempo, estariam sujeitas a erros ou simplesmente seriam muito tediosas.

Funções

Por exemplo, se precisarmos achar a média entre dois números, poderíamos fazer o cálculo manualmente

## [1] 50

Mas se tivéssemos 1000 números em vez de 2, esse processo seria extremamente longo e cansativo. Assim, podemos simplesmente usar a função mean() para calcular a média de todos os números de 1 a 1000

## [1] 500.5

Funções

O R possui inúmeras funções para fazer todo tipo de cálculo que vocês possam imaginar (e também o que vocês nem conseguem imaginar). Ainda assim, à medida que vocês avançam no uso, haverá a necessidade de fazer tarefas específicas, para as quais nenhuma função existente é satisfatória. Nesses momentos fica evidente a vantagem de o R ser uma linguagem de programação, pois podemos criar nossas próprias funções.

Por enquanto, vamos explorar algumas funções que já existem no R. Vocês perceberam que não precisei digitar todos os números de 1 a 1000 no slide anterior?

Muito mais fácil do que numeros <- c(1, 2, 3, ..., 1000)

Funções

Mas e se eu quisesse tirar a média dos números ímpares de 1 a 1000? Teria que digitar os números um a um?

Nesses momentos é bom lembrar que a preguiça é um dos traços que separam os bons programadores dos demais. Quase todas as tarefas tediosas e repetitivas na programação podem ser automatizadas de alguma maneira.

Obviamente, o R tem a função seq() que nos permite criar um vetor de números ímpares. Note como são utilizados os argumentos da função.

## [1] 500

Funções

O R vem pré-instalado com diversas funções estatísticas – afinal, essa é uma de suas razões de existir. Além da função mean(), que vimos no slide anterior, podemos olhar também para outras estatísticas descritivas

O comando summary() nos dá uma visão geral sobre esse vetor

##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     1.0   250.5   500.0   500.0   749.5   999.0

Tipos de dados

Linguagens de programação aramazenam variáveis sob diferentes classes.

Hoje vamos fazer apenas uma discussão geral para que vocês saibam que elas existem, e comentaremos os detalhes ao longo das aulas.

  • Valores numéricos: double, integer
  • Texto: character
  • Fatores: factor
  • Valores lógicos: logical
  • Valores especiais: NA, NULL, Inf, NaN

Para descobrir o tipo de um objeto, você pode usar a função typeof()

Dataframes

Podemos pensar nos dataframes como coleções de vetores dispostos lado a lado. É, de longe, o formato mais utilizado para a análise e processamento de dados.

O R tem suporte para outras estruturas de dados como matrizes e listas, que veremos conforme a necessidade.

Tidy data

  • Observações nas linhas
  • Atributos nas colunas
  • Valores nas células

Tidy Data

Subsetting para vetores

As ferramentas que vamos ver agora servem para “pinçar” informações que estã na memória do R. Voltando ao vetor de números ímpares que criamos mais cedo, suponha que eu queira saber o valor do 287º elemento

Podemos expandir o operador [ para diversas seleções, de acordo com a necessidade

Note que sempre podemos guardar os resultados dessas operações em um novo objeto

Subsetting para dataframes

O funcionamento do operador [ é semelhante para dataframes, mas precisamos atentar para as dimensões de linhas e colunas

A diferença é que, com dataframes, é muito comum utilizarmos o operador $ para selecionar colunas

Operadores Lógicos

Para seleções mais complexas, é comum que se precise recorrer a operadores lógicos.

Logical

Operadores Lógicos

Os mais comuns são & e |, mas todos os operadores relacionais também são reconhecidos: == (igual a), != (diferente de), > (maior que), < (menor que), >= (maior ou igual que), <= (menor ou igual que)

Importanto dados

Como adiantamos na abordagem de projetos no RStudio, um excelente pacote para auxiliar na tarefa de navegação no diretório do projeto é o pacote here.

A função que dá nome ao pacote é usada para direcionar o seu programa à pasta correta no diretório do projeto. Vejamos o exemplo:

Obs: O Banco Mundial publica os dados de seus projetos. Os dados acima foram obtidos através de download e seleção de algumas colunas da lista de projetos ativos no Brasil. Você encontra a lista completa aqui!

Exportando dados

Suponha que após você carregar a base de dados, realizou tarefas que mudaram sua configuração e você deseja salvá-las sem reescrever a base original.

Onde obter ajuda?

google

Onde obter ajuda?

A função sum() é frequentemente útil. Ela permite somar vetores. Vamos aproveitar para consultar a documentação desta função através de outra função, a função ?.

Onde obter ajuda?

Além da documentação oficial do R, uma referência muito valiosa é o Stack Overflow

Stack

useR!2017: We R What We Ask - Video!

Tarefa da aula

As instruções da tarefa estão no arquivo NN-class-ds4ir-assignment.rmd da pasta assignment que se encontra na raiz desse projeto.